package partidos;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import utils.defines;
import dao.partidosDao;

public class generador extends partidosDao{
	
	static dao.competicionesDao competicionesDao = new dao.competicionesDao();
	static dao.equiposDao equiposDao = new dao.equiposDao();
	static int numeroPartidoInsertado = 0;
	
	
	public void crearTabla() throws IOException, SQLException {
		partidosDao.crearTablaPartidos();
	}
	
	public void generarPartidos() throws IOException, SQLException {
		insertarPartidosPrimeraDivision();
		insertarPartidosSegundaDivision();
		insertarPartidosSegundaDivisionB();
		insertarPartidosTerceraDivision();
		insertarPartidosDivisionesRegionales();
	}
	
	public int getNumeroAleatorio(){
		return 0;
	}

	public void insertarPartidosPrimeraDivision() throws SQLException, IOException{
		insertarPartidos(defines.PRIMERA_DIVISION);
	}
	
	public void insertarPartidosSegundaDivision() throws SQLException, IOException{
		insertarPartidos(defines.SEGUNDA_DIVISION);
	}
	
	public void insertarPartidosSegundaDivisionB() throws SQLException, IOException{
		insertarPartidos(defines.SEGUNDA_DIVISION_B);
	}
	
	public void insertarPartidosTerceraDivision() throws SQLException, IOException{
		insertarPartidos(defines.TERCERA_DIVISION);
	}
	
	public void insertarPartidosDivisionesRegionales() throws SQLException, IOException{
		insertarPartidos(defines.DIVISIONES_REGIONALES);
	}
	
	
	/*
	 * 
	 */
	
	public void insertarPartidos(int categoria) throws SQLException, IOException{
		ResultSet competiciones = competicionesDao.getCompeticionesPorCategoria(categoria);
		int totalPartidos = partidosDao.totalPartidos();
		
		while(competiciones.next()){
			
			int competicion = competiciones.getInt("id_competicion");
			//if(competicion>=296){
				for(int jornada=1;jornada<=38;jornada++){
					
					for(int p=1;p<=10;p++){	
						
						int equipoLocal = retornarEquipoLocal(categoria,competicion,defines.TEMPORADA_ACTUAL,jornada);
						int equipoVisitante = retornarEquipoVisitante(equipoLocal,categoria,competicion,defines.TEMPORADA_ACTUAL,jornada);
						String tantoXCiento = contarPartidosInsertados(totalPartidos);

						System.out.print(tantoXCiento+"% - Competicion->"+competicion+"->Jornada->"+jornada+"Partido->"+p+"EL->"+equipoLocal+"EV->"+equipoVisitante+"\n");
						partidosDao.insertarPartido(defines.TEMPORADA_ACTUAL,categoria,competicion,jornada,equipoLocal,equipoVisitante);
						totalPartidos++;
					}
				}
			}
			
		//}
	}
	
	public String contarPartidosInsertados(int numeroPartidoInsertado){
		float totalPartidos = 145920;
		float  resultado = (numeroPartidoInsertado/totalPartidos)*100;
		return String.format("%.1f",resultado);
		
	}

	
	
	public int retornarEquipoLocal(int id_categoria,int id_competicion,int temporada,int jornada) throws SQLException{
		int equipoLocal = equiposDao.getEquipoUnicoLocal(id_categoria,id_competicion,temporada,jornada);
		return equipoLocal;
	}
	
	public int retornarEquipoVisitante(int equipoLocal,int id_categoria,int id_competicion,int temporada,int jornada) throws SQLException{

		int equipoVisitante = equiposDao.getEquipoUnicoVisitante(equipoLocal,id_categoria,id_competicion,temporada,jornada);
		return equipoVisitante;
	}
	
	
	public int partidosNecesariasCompeticion(int categoria,int competicion,int temporada) throws SQLException{
		int jornadasExistentes = partidosDao.contarPartidosPorCompeticion(categoria,competicion,temporada);
		
		jornadasExistentes = defines.PARTIDOS_JORNADA - jornadasExistentes;
		
		return jornadasExistentes;
	}
	

	
}
